Challenge #42: Inspire Europe ’16 Grand Prix (L1) ~複数シートのデータの統合等~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
当エントリは『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』の11日目です。
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 - Qiita
- Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018 | シリーズ | Developers.IO
『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』では、Alteryx Communityで公開されているWeekly ChallengeのIntermediate Levelにひたすら1人で挑戦していきます。
今回は複数シートのデータの統合等に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2018.4.3.54046 英語版
Challenge #42: Inspire Europe '16 Grand Prix (L1)
お題
今回挑戦するお題はこちら。
「Input」側にはInput DataツールとText Inputツールで2つのデータが用意されています。通常は「Output」側に答えとなるデータがありますが、今回は用意されていません。お題の説明に出力するデータの条件が記載されています。
- 付属のExcelファイルの各シートからレコードを統合する
- 「Lighting Conditions」列をText Inputツールの情報を使って更新、同じ列名を維持する
- 「Accident Date_Date」列を作成し「Accident Date」列からDate形式の日付を作成する
- 「Time Buckets」列を作成し「Time (24hr)」列によって以下のパラメータに分類
・0000 - 0559 - Early Morning
・0600 - 1159 - Morning
・1200 - 1559 - Afternoon
・1600 - 2059 - Evening
・2100 - 2359 - Night
このお題はタイトルに「Inspire Europe '16」とあることから、2016年のヨーロッパのInspireで出題されたもののようです。模範解答にあるワークフローを確認すると、Inspireでは説明に記載されている以外の条件があったようですが、今回は出題にあるワークフローに記載の条件でワークフローを作成することにします。
解答の概要
今回作成するワーフクローは以下の通りです。
- Dynamic Inputツールでレコードを統合
- Find Replaceツールで「Lighting Conditions」列を更新
- DateTimeツールでDate形式の日付を作成
- Formulaツールでタイムバケットを作成
レコードを統合
ワークフローに付属しているExcelファイル「Leeds_Input_data.xlsx」には、2009から2015までのシートがあります。各シートのデータを1つに統合します。
まずは出題用ワークフローに初めから配置されているInput Dataツールの設定を変更し、「Leeds_Input_data.xlsx」からシート名を取得します。Table of Query の設定を List of Sheet Names
に変更します。
Dynamic Inputツール(Developer -> Dynamic Input)を使用して、各シートからデータを読み込みます。Input Data Source Template には「Leeds_Input_data.xlsx」を設定します。この時、Table or Query には仮に「2009」のシートを選択しています。
Read a List of Data Sources には Sheet Names
を選択、Action には Change File/Table Name
を選択します。
結果を確認して1つ目の条件の達成です。
「Lighting Conditions」列を更新
前項で用意したデータには「Lighting Conditions」列があります。
「Lighting Conditions」列を、Text Inputツールで用意されている「Reclassify」列のパラメータに変更します。
Find Replaceツール(Join -> Find Replace)をワークフローに配置します。Dynamic InputツールからFind Replaceツールの F の入力に接続し、Text InputツールからFind Replaceツールの R の入力に接続します。設定は以下の通り行います。
- Find: Any Part of Field
- Find Within Field: Lighting Conditions
- Find Value: Lighting Conditions
- Replace: Replace Found Text With Value: Reclassify
- Replace Multiple Found Item (Find Any Part of Field only)
結果を確認して2つ目の条件の達成です。
Date形式の日付を作成
「Accident Data」列の日付からDate形式の日付を出力します。
DateTimeツール(Parse -> DateTime)を接続して以下の通り設定します。
- Select the format to convert: String to Date/Time format
- Select the string field to convert: Accident Date
- Specify the new column name: Accident Date_Date
- Select the format that matches the incoming string field: dd-Mon.-yy
結果を確認して3つ目の条件の達成です。
タイムバケットを作成
「Time Buckets」列を作成し、「Time (24hr)」列に書かれている時間から分類します。
Formulaツール(Preparation -> Formula)を使用して、「Time Buckets」列をV_WString型で作成します。
式は以下の通り設定しています。
if ToNumber([Time (24hr)]) <= 559 then "Early Morning" elseif ToNumber([Time (24hr)]) <= 1159 then "Morning" elseif ToNumber([Time (24hr)]) <= 1559 then "Afternoon" elseif ToNumber([Time (24hr)]) <= 2059 then "Evening" else "Night" endif
- 「Time (24hr)」列が559以下の場合はEarly Morningを出力
- 「Time (24hr)」列が1159以下の場合はMorningを出力
- 「Time (24hr)」列が1559以下の場合はAfternoon
- 「Time (24hr)」列が2059以下の場合はEveningを出力
- それ以外はNightを出力
結果を確認して4つ目の条件の達成です。
最後に
今回はWeekly ChallengeのChallenge #42: Inspire Europe '16 Grand Prix (L1)に挑戦しました。
明日もお楽しみに!
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。